Cloud computing management software offers central control of multiple applications across multiple client nodes. Most existing cloud management software is configured for use in a cloud network that includes general purpose client nodes, wherein each client node has similar processing and data storage capabilities. Additionally, some cloud management solutions require the hardware on client nodes to support specific features. These make existing cloud management software difficult to integrate into pre-existing computing systems with diverse hardware resources that were not originally intended for cloud computing.
Existing cloud management software is also configured for use in environments with unlimited or elastic hardware resources. For example, many cloud management solutions operate in environments where if additional hardware resources are needed, the additional resources can be obtained by renting them from available hardware resource “farms” on the internet. Because of this, many cloud management solutions rigidly partition hardware resources among applications, such that once a hardware resource is assigned to an application it cannot be reassigned or shared with another application until the first application has completed. This leads to wasted hardware resources, as a hardware resource that is idle or underutilized by an application cannot be reassigned or shared with another application until the assigned application is complete. This is undesirable in some situation, such as when only a small amount of fixed hardware resources is available.
Most existing cloud management software is also relatively large, being configured for use in any of multiple environments. For example, existing open source cloud solutions for Linux support private cloud deployments and third-party hosting by innumerable service providers. Existing open source cloud solutions also have ecosystems in which independent open source projects fill gaps encountered by software developers wishing to deploy small and large projects in a cloud, providing for instance wizard-guided creation of a development environment in which the developer chooses the Linux distribution, database, middleware, development languages, and libraries, and a complete virtual machine environment is created suitable for development and immediate deployment to a private or third-party cloud. Aftermarket configuration management tools allow a developer to describe a runtime environment and its dependencies to ease recreation of an environment with newer versions of dependencies that may address bugs or security issues. Automated deployment tools allow creating cloud-deployable VM images from an existing Linux and aid in configuring multiple active nodes. All these features cause many existing cloud management solutions to be large and unsuitable for situations where a small, low processing cloud management solution is desired.
Existing cloud management software is also configured such that new applications are initiated by administrator interaction requesting initiation of the new application in the cloud. Thus, the cloud management software relies on administrator interaction throughout its cloud management operation.
These attributes, among others, make existing cloud management software unsuitable for operation in an environment with limited and diverse client nodes, in a situation with a reduced processing, data storage, and/or energy availability, or an environment in which a connection to an administrator may not always be present, requiring some amount of autonomous operation by the cloud management software.
Additionally, existing cloud management software is not configured to implement, within its managed cloud, multiple domains, which are segregated such that an application in one domain cannot concurrently share a hardware resource with an application in another domain. As such, existing cloud management software may not sufficiently segregate applications to allow different security level applications to be implemented within the same managed cloud.